查看原文
其他

log——为你的操作保驾护航

爬虫俱乐部 Stata and Python数据分析 2022-12-31


本文作者:陈志林,河南大学经济学院

本文编辑:喻淑敏

技术总编:李婷婷


Stata&Python云端课程来啦!

      为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~


导读

log 命令为Stata自带命令,也称为日志功能,可以将输入的命令以及输出过程内容保存到文件中。一个完整的日志文件包含我们键入的内容以及在Stata结果窗口中输出的所有内容。养成记录日志的好习惯会方便我们在后续过程中查找之前的运行程序和运行结果,达到事半功倍的效果,快来一起试试吧!

01命令介绍


log 命令的用法大致如下:

1、log及其子命令

报告日志文件的状态log

生成并打开日志文件log using filename [, append replace [text|smcl] name(logname) nomsg]

关闭日志log close [logname | _all]

暂停或恢复日志记录log {off|on} [logname]

通过log 及其子命令可以打开一个日志文件,并创建一个日志,记录键入的内容和输出的结果。其默认生成的文件格式为SMCL,也可以是纯文本格式,建议大家使用SMCL,因为它可以保留字体和颜色。

2、cmdlog及其子命令

报告命令日志文件的状态cmdlog

打开命令日志文件cmdlog using filename [, append replace]

关闭或继续或暂停命令日志文件cmdlog {close|on|off}

cmdlog 及其子命令类似于log 命令,都能够打开、暂停或继续记录日志,但是cmdlog命令创建一个命令日志只是记录输入的内容,并不对输出结果进行记录,且只能是纯文本文件。  

接下来我们介绍一下这两个命令的相关选项。

选项append 和replace 均适用于log 和cmdlog ,功能如下:

  • append 指定将结果追加到现有文件中。

  • replace 指定文件名,如果它已经存在,将会被替换。

   其余几个选项text、smcl、name、nomsg仅仅适用于log 中,各自表示的含义为:
  • text 和 smcl 指定记录日志的格式。
  • name(logname) 表示可以生成并打开一个日志文件,并对该日志进行自定义命名。(注意不是日志文件名称哦)。
  • nomsg 隐藏显示在日志文件顶部和底部的默认信息。

另外这两个命令都是有返回值的,r(name)可以返回日志的名称、r(filename)返回日志的文件名、r(status)返回日志的状态是打开还是关闭等等。


02实例操作


我们通过几个简单例子来具体感受一下log 的日志功能吧。

1、日志文件的打开与关闭

我们首先打开一个log文件。

log using log1 //开始记录一个日志

此时Stata中显示的结果如下:

这里表示在默认路径下新建一个log1日志文件,也可以直接指明其路径。其中using不仅表示新建,也表示打开日志文件。对于文件有replace 和append 两种情况,接下来我们分别展开这两个方式。

首先我们来看一下使用replace 选项的情况:

clear all log using log1, replace //生成并使用一个日志文件sysuse auto, clear sum price //变量price的描述性统计log close //关闭日志文件

Stata输出窗口和log1日志文件中显示的结果分别如下:

运用log 命令可以让我们很方便地将操作过程和输出结果都完整无误地记录并保存下来。  

接下来我们继续看一下使用append 选项的情况:

log using log1, append //打开log1文件,并接着原来的日志文件继续记录sort price //按变量price排序sum price in 1/10 //变量price从小到大排序的前十个观测值的基本统计量log close //关闭日志文件

此时log1文件中所显示的结果如下图所示:

可以看出,使用append 这一选项是在原有的log1日志文件中继续记录的。  

再补充一下name选项的用法吧!当我们想要给这个日志定义一个名称时,可以采用以下命令:

log using log2, name(Log2) //开始记录一个日志名为Log2的日志文件

这时窗口中显示的结果如下

  

我们可以看到其日志名为被定义为了“Log2”。

2、日志文件的暂停与恢复

有时候我们在运行时会夹杂一些与整个程序无关的的一些命令,但是我们并不想在日志中记录这些过程,我们应该怎样操作呢?off 与on 可以很好地完成这一任务。  

首先我们执行以下程序:

log using log1, append //打开log1文件,并继续记录log off //暂停记录日志文件brhelp loglog on //暂停结束,继续记录日志文件*/list price in 1/5, sep(2) //列举变量price的前五个观测值,并且每两个分隔开log close //关闭日志文件

Stata结果窗口和log1文件中的结果分别如下:

我们可以看到相对于Stata结果窗口中所显示的内容而言,log1日志文件中对于log off 与log on 命令行之间的内容是不显示的,而这恰恰满足了我们不需要记录一些无关指令的要求。

3、cmdlog命令日志文件的记录

为突显log 与cmdlog 命令之间的区别,我们依然采用类似于3.1和3.2中的操作命令。程序如下:

clear all cmdlog using cmdlog1, replace //生成并使用一个命令日志文件sysuse auto sort price sum price in 1/10 //1-10的变量price的描述性统计cmdlog off //暂停记录命令日志文件help logcmdlog on //暂停结束,继续记录命令日志文件list price in 1/5 //列举显示1-5的变量price的值cmdlog close //关闭命令日志文件

Stata中结果窗口和cmdlog1文件中显示的内容分别为下图所示:

从这两张图中我们可以看出cmdlog 命令记录的只是我们在程序里的命令操作,不包括显示的结果等信息内容。同样,我们也可以通过off 和on 来剔除对不必要指令的记录。

4、返回值

上文已经提到了log的返回值,在这里我们列举一个小例子来简单看一下吧!  

我们执行以下命令来将log的返回值r(name)读入到变量中:

clear alllog using mylog, name(Study)return listset obs 1gen v = "`r(name)'" //将返回值读入变量vdis v

显示结果为:


03结语


其实log命令还有很多巧妙的用处,比如之前在我们的答疑群中也有小伙伴提出这样的一个小问题,即Stata的输出结果已经占满了整个Stata窗口,但是想查看之前的输出内容。

通过我们以上的介绍,相信大家已经猜到解决思路啦!yeah! 就是我们这篇文章介绍的log日志功能咯,赶快动手将自己的命令操作和结果记录下来吧!


END
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



腾讯课堂课程二维码





            


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!














往期推文推荐

一行代码教你玩转emoji

票房遇冷的春节档口碑冠军丨《狙击手》影评分析

 学习丰县,营造良好营商环境!

 大国丢娃图:从川渝到徐州!

 丰县“失火”,殃及徐州:股市超跌近30亿!

 Unicode转义字符——编码与解码

        徐州!徐州!

        B站弹幕爬虫——冬奥顶流冰墩墩&雪容融

        不会用Stata做描述性统计表?so easy!

        丰沛之地:备足姨妈巾

 过年啦,用Python绘制一幅属于你的春联吧!

       登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅

       【基础篇】查找并输出子字符串的定位

        Stata中的小清新命令——添加观测值

        PCA(主成分分析法)降维——Python实现

       超好用的事件研究法

        如何绘制任泽平《鼓励生育基金》的几幅图

        Python 第六天——字符串

        findname——想要什么找什么

        Python字符串之“分分合合”

        PDF转docx可批量操作?——wordconvert的小技巧

        考研之后,文科生需以“do”躬“do”!

       手绘五星兴家国——用Stata绘制五星红旗

        Seminar丨董事会的性别多样化和企业创新:来自国际的证据

       Python与数据库交互——窗口函数

        Stata之post命令——数据邮递 

        爬虫俱乐部成员的Stata学习经验分享来啦!

       Seminar丨2002年萨班斯·奥克斯利法案的经济后果

        我几乎画出了“隔壁三哥”家的国旗

        Python基础——三大数字类型,你都了解吗?
        如何用Stata绘制带指向性箭头标注的图像       
       Seminar丨荐仆贷款——19世纪中国的信任辅助贷款       【技能篇】多进程队列间通信

Seminar丨公司董事会的人才增长:来自中国的证据

正则表达式--懒惰模式

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存